package com.ray.mode.dtproxy;

public class HostMain {

    /**
     * 代理模式
     * 抽象角色：一般适用接口或抽象类(Rent租房）
     * 真实角色：被代理的角色（房东）
     * 代理角色： 代理真实的角色，一般会有更多的附属方法（Proxy中介）
     * 客户角色： 访问代理对象的人（HostMain访问）
     *
     *
     * 缺点：一个真实角色就需要一个代理角色，代码翻倍，解决方法：动态代理
     */
    public static void main(String[] args) {
        //真实对象
        Host host = new Host();

        //代理角色。 现在没有
        ProxyInvocationHandler pih = new ProxyInvocationHandler();
        //通过调用程序处理角色来处理我们要调用的对象
        pih.setRent(host);

        //动态生成的代理对象
        Rent proxy = (Rent) pih.getProxy();
        proxy.rent();
    }
}
